package util.qualitycontainers.qualities;

public interface IMorphQuality extends Comparable<IMorphQuality>
{

    /**
     * Sets this quality to the input qualities characteristics. Must be the
     * same quality class
     * 
     * @param q
     */
    public abstract void setTo (IMorphQuality q);


    /**
     * Check if the passed quality is the same quality class as this
     * 
     * @param other
     * @return
     */
    public abstract boolean isSameQualityClass (IMorphQuality other);


    /**
     * Check if the passed quality class is the same quality class as this
     * 
     * @param other
     * @return
     */
    public abstract boolean isSameQualityClass (Class<? extends IMorphQuality> cls);


    public abstract boolean equals (IMorphQuality q);

}
